This invention relates generally to the field of computer programs and in particular to dynamically managing use of different SKU""s of a single version of computer programs.
A portion of the disclosure of this patent document contains material which is subject to copyright protection. The copyright owner has no objection to the facsimile reproduction by anyone of the patent document or the patent disclosure as it appears in the Patent and Trademark Office patent file or records, but otherwise reserves all copyright rights whatsoever. The following notice applies to the software and data as described below and in the drawing hereto: Copyright (copyright) 1998, 1999, Microsoft Corporation, All Rights Reserved.
Store keeping units (SKUs) are different versions of a same basic product. The term SKU has been used for many years in different industries, such as to identify different size boxes of cereal. The term is also finding its way for use in the software industry. Many programs have sets of components that are provided in different combinations to form different variations (or feature sets) of a single version of a given program. These different variations of a single version are referred to as SKUs. Further, capabilities, such as the maximum size of a file, or the number of processors that each SKU is permitted to run on, or even the components installed may be varied between SKUs. Prior to the present invention, each SKU program has been separately compiled from source code for running directly on computer systems. One such program has different SKU""s with different levels of functionality. Names like Standard Edition, Consumer Edition, Professional Edition, etc . . . are typically given to these different SKU""s to differentiate them in the marketplace. Further, some programs have a timer in them which specifies how long a program will operate without license fees or other events occurring. This allows a user to evaluate the program for a limited period of time to see if they desire to pay for further use. Each of these is also a separate SKU which needs to be compiled separately in order to run on a user""s computer system.
Having multiple separate products with different functionality which may be compiled at separate times leads to complexity and additional effort in ensuring that the code in each is corrected and changed at the same time. In order for a user to upgrade a SKU to a higher functionality or capability, a separate SKU needed to be sent to the user, or the additional function enabled, which resulted in a recompile of the product being required.
There is a need to more easily deal with multiple SKUs to minimize duplicate effort in maintaining them. There is a further need to provide ease of upgrading versions of programs without having to recompile such programs. There is yet a further need to solve such problems without making it easy for a user to obtain an unauthorized upgrade.
A dynamic SKU (store keeping unit) manager creates products with different feature sets without a recompilation of the products. Features are enabled either before shipping to a user, or after the user has a partially enabled product. In one aspect of the invention, products with different feature sets are computer programs. One program has multiple feature sets (or flavors) which are referred to as SKUs, or shop keeper units.
The SKU manager has a module referred to as a brand module which contains a unique encrypted value for each SKU. When this module is executed on a user""s machine, a unique encrypted value is stored onto the machine on which the program is installed. In one aspect of the invention, the encrypted value contains an SKU identifier, a date, and a machine unique name.
A further module is referred to as a query module which is used to obtain information about features and capabilities of a currently installed program. It also keeps track of which SKUs are available, and need not be recompiled if no changes have been made to the available SKUs on the machine. If it is desired to create a new SKU with a new feature set, the SKU and its rules are added to the query component, a new encrypted value is added to the brand module, and they are dropped into an installation of the program. No other code associated with the program need be recompiled.
Another aspect of the invention involves the dynamic loading of the query and brand modules. By dynamically loading it and unloading it each time it is called, it is more difficult to trace, which in turn makes it more difficult to inappropriately obtain upgrades or higher capability/functional SKUs of a program. The SKU manager minimizes duplicate effort in maintaining multiple SKUs, as the code which provides the various levels of functionality need not be recompiled. Thus, only a single version of the code need be maintained. The SKU manager also provides an easier way to perform authorized upgrades of programs without having to recompile such programs.